Nacos 配置集群
集群部署架构图
参考资料 Nacos 支持三种部署模式
默认 Nacos 使用嵌入式数据库实现数据的存储。所以,如果启动多个默认配置下的 Nacos 节点,数据存储是存在一致性问题的。为了解决这个问题,Nacos 采用了集中式存储的方式来支持集群化部署,目前只支持 MySQL 的存储。
Nacos 支持三种部署模式
- 单机模式-用于测试和单机试用。
- 集群模式-用于生产环境,确保高可用。
- 多集群模式-用于多数据中心场景。
Nacos 持久化切换配置
在单机模式时 Nacos 使用嵌入式数据库实现数据的存储,不方便观察数据存储的基本情况。而且存在一致性问题,所以需要切换为统一的数据库
初始化 MySQL 数据库,数据库初始化文件:nacos-mysql.sql
执行里面附带的脚本:
修改 conf/application.properties
文件,增加支持 mysql 数据源配置(目前只支持 mysql),添加 mysql 数据源的 url、用户名和密码。
spring.datasource.platform=mysql
### Count of DB:
db.num=1
### Connect URL of DB:
db.url.0=jdbc:mysql://192.168.211.137:3306/nacos?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true
db.user=root
db.password=123456
再重启 Nacos(注意,要等一两分钟)
Nacos 集群配置
梳理出 3 台 nacos 集器的不同服务端口号,设置 3 个端口:
- 3333
- 4444
- 5555
复制出 cluster.conf
内容(这里条件有限,就使用单台设备做集群了):
192.168.111.144:3333
192.168.111.144:4444
192.168.111.144:5555
注意,这个 IP 不能写 127.0.0.1
,必须是 Linux 命令 hostname -i
能够识别的 IP
编辑 Nacos 的启动脚本 startup.sh
,使它能够接受不同的启动端口
/mynacos/nacos/bin
目录下有 startup.sh
平时单机版的启动,都是 ./startup.sh
即可
但是,集群启动,我们希望可以类似其它软件的 shell 命令,传递不同的端口号启动不同的 nacos 实例。(说白了就是使用单机模拟集群)
命令: ./startup.sh -p 3333
表示启动端口号为 3333 的 nacos 服务器实例,和上一步的 cluster.conf
配置的一致。
执行方式 startup.sh -p 端口号
Nginx 配置负载均衡器
修改 nginx 的配置文件 - nginx.conf
修改内容
按照指定启动
截止到此处,1 个 Nginx + 3 个 nacos 注册中心 + 1 个 mysql
测试集群
启动 3 个 nacos 注册中心
startup.sh - p 3333
startup.sh - p 4444
startup.sh - p 5555
查看 nacos 进程启动数
ps -ef | grep nacos | grep -v grep | wc -l
启动 nginx
./nginx -c /usr/local/nginx/conf/nginx.conf
查看 nginx 进程
ps - ef| grep nginx
测试通过 nginx,访问 nacos
http://192.168.111.144:1111/nacos/#/login
新建一个配置测试
新建后,可在 linux 服务器的 mysql 新插入一条记录
select * from config;
让微服务 cloudalibaba-provider-payment9002 启动注册进 nacos 集群
server:
port: 9002
spring:
application:
name: nacos-payment-provider
c1oud:
nacos:
discovery:
#配置Nacos地址
#server-addr: Localhost:8848
#换成nginx的1111端口,做集群
server-addr: 192.168.111.144:1111
management:
endpoints:
web:
exposure:
inc1ude: '*'
修改配置文件
启动微服务 cloudalibaba-provider-payment9002 访问 nacos,查看注册结果